home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume18 / planet / part01 next >
Encoding:
Internet Message Format  |  1991-04-10  |  52.6 KB

  1. From: allen@viewlogic.com (Dave Allen)
  2. Newsgroups: comp.sources.misc
  3. Subject: REPOST: v18i001:  planet - planet generation simulator, Part01/04
  4. Message-ID: <1991Apr9.041648.7975@sparky.IMD.Sterling.COM>
  5. Date: 9 Apr 91 04:16:48 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: e4b9729c a9ba8dca 132d9842 941c865b
  8.  
  9. Submitted-by: Dave Allen <allen@viewlogic.com>
  10. Posting-number: Volume 18, Issue 1
  11. Archive-name: planet/part01
  12. Supersedes: tec: Volume 10, Issue 77-78
  13.  
  14. [After I took the time to repackage this up due to a problem creating the
  15. directories during unsharing, I went ahead and posted the original version 
  16. and removed my repackaged version... Lets try it again... -Kent+]
  17.  
  18. This is version 1 of a scientific planet generator (as opposed to a
  19. die-rolling planet generator).  It is written in C and runs in graphics
  20. mode under Xwindows, or in text-only mode under UN*X.  There are three
  21. programs: 
  22.  
  23.    - tec: a continental drift simulator
  24.    - clim: a climate generator
  25.    - globe: computes and displays a rotating planet
  26.  
  27. Dave
  28. ----
  29. #! /bin/sh
  30. # This is a shell archive.  Remove anything before this line, then feed it
  31. # into a shell via "sh file" or similar.  To overwrite existing files,
  32. # type "sh file -c".
  33. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  34. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  35. # Contents:  . ./doc ./example ./example/globe.in ./src ./src/Makefile
  36. #   ./src/rain.c
  37. # Wrapped by kent@sparky on Mon Apr  8 22:39:14 1991
  38. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  39. echo If this archive is complete, you will see the following message:
  40. echo '          "shar: End of archive 1 (of 4)."'
  41. if test ! -d './doc' ; then
  42.     echo shar: Creating directory \"'./doc'\"
  43.     mkdir './doc'
  44. fi
  45. if test ! -d './example' ; then
  46.     echo shar: Creating directory \"'./example'\"
  47.     mkdir './example'
  48. fi
  49. if test -f './example/globe.in' -a "${1}" != "-c" ; then 
  50.   echo shar: Will not clobber existing file \"'./example/globe.in'\"
  51. else
  52.   echo shar: Extracting \"'./example/globe.in'\" \(40677 characters\)
  53.   sed "s/^X//" >'./example/globe.in' <<'END_OF_FILE'
  54. X(LAND (
  55. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  56. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  57. X   0   0   0   0   0   0   0   0   0   0   0   0   1   1   2
  58. X   2   2   2   2   2   2   2   2   2   2   2   2   1   0   0
  59. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  60. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  61. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  62. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  63. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  64. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  65. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  66. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  67. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  68. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  69. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  70. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  71. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  72. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  73. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  74. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  75. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  76. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  77. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  78. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  79. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  80. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  81. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  82. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  83. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  84. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  85. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  86. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  87. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  88. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  89. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  90. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  91. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  92. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  93. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  94. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  95. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  96. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  97. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  98. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  99. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  100. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  101. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  102. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  103. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  104. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  105. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  106. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  107. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  108. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  109. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  110. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  111. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  112. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  113. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  114. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  115. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  116. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  117. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  118. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  119. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  120. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  121. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  122. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  123. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  124. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  125. X   0   0   0   0   0   1   2   3   3   3   3   3   3   3   3
  126. X   3   3   3   3   3   3   3   3   3   3   3   3   3   2   1
  127. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  128. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  129. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  130. X   0   0   1   4   4   3   0   0   0   0   0   0   0   0   0
  131. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
  132. X   3  18  22  22  22  22  22  22  22  22  22  22  22  22  22
  133. X  22  22  22  22  23  24  26  25  23   6   3   1   0   0   0
  134. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  135. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  136. X   0   0   0   0   0   0   0   0   0   0   1   5  10  31  26
  137. X   8   4   3   3   3   3   3   3   2   1   0   0   0   0   0
  138. X   0   0   0   0   0   0   0   0   0   2  19  24  27  29  29
  139. X  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29
  140. X  29  32  31  31  25  24   1   0   0   4   5   5   1   0   0
  141. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  142. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  143. X   0   0   0   0   0   5  30  35  38  35  30  25  23  23  24
  144. X  24  24  20  17   2   0   0   0   0   0   0   0   0   0   0
  145. X   0   0   0   0   3  23  28  31  32  32  32  32  32  32  32
  146. X  32  32  32  32  32  32  32  32  34  34  34  34  35  36  29
  147. X   9   1   0   4  13  29  35  10   5   1   0   0   0   0   0
  148. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  149. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  150. X  10  38  48  45  40  32  32  31  31  27  26  27  24  21   3
  151. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
  152. X  25  29  33  34  35  35  35  35  35  35  35  35  35  35  35
  153. X  35  35  34  34  35  36  37  39  39  30   9   0   0   8  30
  154. X  40  42  35  35  10   5   1   0   0   0   0   0   0   0   0
  155. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  156. X   0   0   0   0   0   0   0   0   0   2  17  43  51  49  43
  157. X  35  33  32  32  33  34  33  29  23  18   0   0   0   0   0
  158. X   0   0   0   0   0   0   0   0   0   3  27  31  35  37  37
  159. X  37  37  37  37  37  37  37  37  37  37  37  37  36  36  36
  160. X  36  37  38  36  27   6   0   0  11  33  47  48  45  44  37
  161. X  35  10   5   1   0   0   0   0   0   0   0   0   0   0   0
  162. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  163. X   0   0   0   0   6  37  48  57  47  43  37  37  37  38  34
  164. X  33  32  31  26  20   0   0   0   0   0   0   0   0   0   0
  165. X   0   0   0   0   3  26  32  35  38  38  38  38  38  38  38
  166. X  38  38  38  38  38  38  38  39  38  38  38  38  37  31  12
  167. X   3   0   3  13  36  44  43  48  48  47  45  37  32   7   2
  168. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  169. X   0   0   0   0   0   0   0   0   0   0   0   0   0   2  13
  170. X  43  53  55  47  44  39  38  36  37  38  39  36  32  26  22
  171. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
  172. X  25  33  35  40  40  40  40  40  40  40  40  40  40  40  40
  173. X  40  40  39  40  40  39  39  38  30   9   0   0   6  28  39
  174. X  43  44  46  47  49  51  52  44  31   7   1   0   0   0   0
  175. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  176. X   0   0   0   0   0   0   0   0   6  34  48  54  51  45  43
  177. X  39  39  40  40  40  40  35  33  25  22   0   0   0   0   0
  178. X   0   0   0   0   0   0   0   0   0   3  27  33  35  39  39
  179. X  39  39  39  39  39  39  39  39  39  39  39  39  39  39  39
  180. X  40  40  40  31   9   0   0   9  33  42  44  45  43  46  47
  181. X  52  56  53  43  32   5   0   0   0   0   0   0   0   0   0
  182. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  183. X   0   0   2  13  40  49  55  49  45  41  39  38  38  37  37
  184. X  36  35  33  27  22   0   0   0   0   0   0   0   0   0   0
  185. X   0   0   0   0   3  26  31  34  37  37  37  37  37  37  37
  186. X  37  37  37  37  37  37  37  37  37  38  39  39  39  32   9
  187. X   0   0  10  34  44  42  43  43  44  45  51  57  57  52  36
  188. X   9   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  189. X   0   0   0   0   0   0   0   0   0   0   1   5  11  36  42
  190. X  49  48  42  41  39  37  36  37  36  37  37  35  30  26  20
  191. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
  192. X  24  29  32  34  34  34  34  34  34  34  34  34  34  34  34
  193. X  34  35  36  37  38  38  38  40  33   9   0   0  11  31  43
  194. X  44  44  43  43  44  52  58  59  55  37  10   0   0   0   0
  195. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  196. X   0   0   0   1   5  10  32  32  40  44  43  41  41  38  37
  197. X  35  35  34  33  32  33  31  28  24   3   0   0   0   0   0
  198. X   0   0   0   0   0   0   0   0   0   3  23  28  29  31  31
  199. X  31  31  31  31  31  31  31  31  32  33  34  35  35  35  35
  200. X  37  39  40  34   9   0   0  12  34  46  46  45  43  43  45
  201. X  52  56  59  49  32   6   0   0   0   0   0   0   0   0   0
  202. X   0   0   0   0   0   0   0   0   0   0   0   0   2   7  32
  203. X  34  38  44  41  41  40  39  37  36  35  34  33  32  33  34
  204. X  32  31  27  23   3   0   0   0   0   0   0   0   0   0   0
  205. X   0   0   0   0   3  21  26  29  30  31  31  31  31  31  31
  206. X  31  31  32  33  31  33  33  33  33  36  38  40  40  33   9
  207. X   0   0  12  32  44  44  43  42  42  47  53  60  57  42  13
  208. X   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  209. X   0   0   0   0   0   0   2   9  32  42  44  45  41  38  38
  210. X  38  37  35  34  33  32  31  31  29  29  28  28  25  21   3
  211. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
  212. X  20  23  28  28  28  28  28  28  28  28  29  30  31  31  31
  213. X  31  32  34  35  36  38  40  40  33   9   0   0  11  31  42
  214. X  40  39  38  38  47  54  62  54  38   8   0   0   0   0   0
  215. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  216. X   0   6  30  40  47  46  44  40  38  36  35  35  34  32  31
  217. X  30  30  31  30  30  28  27  24  19   3   0   0   0   0   0
  218. X   0   0   0   0   0   0   0   0   0   3  20  22  25  25  25
  219. X  25  25  25  26  27  29  30  31  31  32  33  34  35  36  37
  220. X  39  39  41  31   9   0   0  10  33  40  41  40  37  39  46
  221. X  52  60  54  38   8   0   0   0   0   0   0   0   0   0   0
  222. X   0   0   0   0   0   0   0   0   0   0   0  11  39  48  53
  223. X  46  43  39  37  36  36  35  34  32  31  31  28  28  27  27
  224. X  27  26  24  19   3   0   0   0   0   0   0   0   0   0   0
  225. X   0   0   0   0   3  21  24  28  30  31  31  31  31  31  32
  226. X  32  32  32  32  33  34  36  37  38  39  39  39  39  29   9
  227. X   0   0   8  28  35  36  35  34  34  41  53  58  58  42  13
  228. X   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  229. X   0   0   0   0   0   0  14  40  52  51  46  42  39  38  37
  230. X  38  35  33  33  32  30  30  29  27  26  26  26  22  19   3
  231. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3
  232. X  22  26  29  29  30  31  31  31  31  31  31  32  33  34  35
  233. X  35  37  39  38  37  38  37  37  28   9   0   0   7  29  35
  234. X  33  33  33  34  38  45  52  58  49  33   6   0   0   0   0
  235. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  236. X   0  12  35  50  49  47  42  40  39  40  39  37  35  34  33
  237. X  32  31  32  31  31  31  28  24  21   3   0   0   0   0   0
  238. X   0   0   0   0   0   0   0   0   0   3  23  26  31  34  35
  239. X  36  36  37  37  37  37  36  35  35  36  37  38  37  37  36
  240. X  37  36  35  26   8   0   0   6  27  32  31  30  31  31  35
  241. X  41  54  56  55  41  12   1   0   0   0   0   0   0   0   0
  242. X   0   0   0   0   0   0   0   0   0   0   0   7  30  41  45
  243. X  48  43  43  43  41  39  39  38  36  35  33  32  32  31  31
  244. X  30  28  27  22   3   0   0   0   0   0   0   0   0   0   0
  245. X   0   0   0   0   3  23  27  31  33  34  35  35  36  36  36
  246. X  36  36  36  37  37  37  36  36  34  35  35  34  33  27   7
  247. X   0   0   6  24  30  29  28  30  30  33  37  48  55  61  46
  248. X  33   3   0   0   0   0   0   0   0   0   0   0   0   0   0
  249. X   0   0   0   0   0   0   2   7  31  36  40  47  47  47  45
  250. X  43  40  38  38  36  36  37  38  37  37  37  34  30  26  21
  251. X   1   0   0   0   0   0   0   0   0   0   0   0   0   0   3
  252. X  22  28  31  36  38  38  39  39  39  39  38  38  39  38  37
  253. X  35  35  34  34  34  33  32  31  25   6   0   0   6  23  28
  254. X  29  30  31  30  32  35  44  53  58  51  37   7   0   0   0
  255. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  256. X   0   0   1   5  12  33  40  46  51  47  45  43  40  40  38
  257. X  37  36  36  36  36  36  35  33  28  21   2   0   0   0   0
  258. X   0   0   0   0   0   0   0   0   0   3  21  27  32  36  39
  259. X  38  40  40  40  41  41  41  39  37  35  34  33  32  32  32
  260. X  31  30  30  25   6   0   0   6  24  31  31  29  29  28  31
  261. X  34  38  51  59  57  41  12   1   0   0   0   0   0   0   0
  262. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   2
  263. X   9  33  43  50  52  48  45  42  40  40  40  39  39  40  40
  264. X  41  39  35  31  24   4   1   0   0   0   0   0   0   0   0
  265. X   0   0   0   0   2  20  25  32  35  39  40  39  39  40  40
  266. X  41  40  38  36  34  32  32  31  29  30  31  31  30  25   4
  267. X   0   0   6  25  30  29  28  27  27  28  31  37  46  53  59
  268. X  49  37   5   0   0   0   0   0   0   0   0   0   0   0   0
  269. X   0   0   0   0   0   0   0   0   0   0   2   9  33  42  48
  270. X  50  47  45  43  41  41  40  40  41  41  40  38  38  33  25
  271. X  19   2   0   0   0   0   0   0   0   0   0   0   0   0   3
  272. X  23  28  31  35  38  38  38  37  36  37  36  37  38  35  34
  273. X  32  30  29  30  30  32  32  27   8   2   0   2   8  25  28
  274. X  27  26  25  25  26  29  32  40  51  59  54  41  11   1   0
  275. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  276. X   0   0   0   0   0   0   2   9  33  43  49  47  45  44  43
  277. X  40  39  40  41  41  41  41  38  33  26  21   3   0   0   0
  278. X   0   0   0   0   0   0   0   0   0   2  18  26  29  33  35
  279. X  36  37  38  38  38  38  37  36  35  33  33  32  32  31  31
  280. X  31  30  23   6   0   0   3  20  26  27  26  24  23  23  26
  281. X  27  34  37  48  56  58  50  35   5   0   0   0   0   0   0
  282. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  283. X   0   0   2   7  33  38  45  50  45  44  42  41  40  39  39
  284. X  38  39  37  33  25  20   2   0   0   0   0   0   0   0   0
  285. X   0   0   0   0   2   4  25  28  31  33  34  35  36  35  34
  286. X  33  32  31  31  32  32  32  31  31  29  29  28  22   5   0
  287. X   0   4  23  25  25  24  23  22  22  25  26  31  34  42  53
  288. X  59  55  37   9   0   0   0   0   0   0   0   0   0   0   0
  289. X   0   0   0   0   0   0   0   0   0   0   0   0   0   1   5
  290. X  14  34  41  45  47  44  43  41  41  38  37  37  34  31  26
  291. X  22   2   0   0   0   0   0   0   0   0   0   0   0   0   0
  292. X   1  21  23  29  31  32  34  34  34  35  34  33  32  31  31
  293. X  30  30  29  28  28  27  26  23   4   0   0   3  22  24  23
  294. X  22  22  22  22  24  27  29  34  40  51  56  57  41  12   0
  295. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  296. X   0   0   0   0   0   0   0   0   0   0   4  11  32  40  45
  297. X  47  46  44  43  39  39  35  33  30  25  21   2   0   0   0
  298. X   0   0   0   0   0   0   0   0   0   0   0   3  23  26  29
  299. X  30  31  32  31  30  30  30  30  30  29  29  28  27  27  26
  300. X  25  25  21   3   0   0   3  20  22  22  22  22  22  22  24
  301. X  28  29  33  39  52  54  52  36   9   0   0   0   0   0   0
  302. X   0   0   0   0   0   0   0   0   0   0   0   0   1   1   1
  303. X   0   0   0   0   0   0   2   7  33  36  42  46  48  44  41
  304. X  40  35  35  29  26  21   3   0   0   0   0   0   0   0   0
  305. X   0   0   0   0   0   0   2  18  24  26  29  29  30  31  31
  306. X  30  29  29  28  27  26  26  26  25  24  23  23  19   3   0
  307. X   0   3  19  22  22  22  22  22  22  24  28  28  37  46  51
  308. X  53  44  32   5   0   0   0   0   0   0   0   0   0   0   0
  309. X   0   0   0   0   0   0   1   5  20  23   3   0   0   0   0
  310. X   0   0   1   5  12  34  41  46  49  43  40  36  32  29  27
  311. X  20   3   0   0   0   0   0   0   0   0   0   0   0   0   0
  312. X   0   1   3  21  24  26  28  28  27  26  25  26  27  27  27
  313. X  26  25  24  23  22  22  22  19   3   0   0   3  19  22  22
  314. X  22  22  22  22  23  28  29  38  46  53  49  35   7   1   0
  315. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  316. X   1   3  23  22  19   3   0   0   0   0   0   0   0   0   2
  317. X   9  33  42  46  46  43  38  34  31  29  21   4   1   0   0
  318. X   0   0   0   0   0   0   0   0   0   0   0   0   2  22  22
  319. X  25  25  25  25  27  26  25  25  25  25  24  23  22  22  22
  320. X  22  21  18   2   0   0   3  19  22  22  22  22  22  22  24
  321. X  28  33  44  53  59  46  17   3   0   0   0   0   0   0   0
  322. X   0   0   0   0   0   0   0   0   0   1   4  23  26  26   7
  323. X   3   0   0   0   0   0   0   0   0   0   2   9  32  41  44
  324. X  43  38  36  31  26  23  17   2   0   0   0   0   0   0   0
  325. X   0   0   0   0   0   0   0   1  17  20  23  22  22  22  23
  326. X  23  23  22  22  22  22  22  22  22  22  22  20   4   1   0
  327. X   1   4  20  22  22  22  22  22  22  24  25  31  40  51  56
  328. X  47  36   5   0   0   0   0   0   0   0   0   0   0   0   0
  329. X   0   0   0   0   2  25  30  29   7   2   0   0   0   0   0
  330. X   0   0   0   0   0   0   2   7  32  34  39  41  36  33  28
  331. X  24  18   3   0   0   0   0   0   0   0   0   0   0   0   0
  332. X   0   0   1  19  19  22  22  22  22  22  22  22  22  22  22
  333. X  22  22  22  22  22  22  19   3   0   0   2  18  21  22  22
  334. X  22  22  22  22  24  25  31  38  48  53  54  41  14   4   0
  335. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4
  336. X  33  36  38  26   5   2   1   0   0   0   0   0   0   0   0
  337. X   0   0   1   5  11  29  32  33  33  27  23  20   5   0   0
  338. X   0   0   0   0   0   0   0   0   0   0   0   0   0  18  19
  339. X  21  21  21  22  22  22  22  22  22  22  22  22  22  22  22
  340. X  22  19   3   0   0   3  19  22  22  22  22  22  22  22  23
  341. X  27  28  34  42  50  54  53  37  10   0   0   0   0   0   0
  342. X   0   0   0   0   0   0   0   0   0  10  40  44  44  33  29
  343. X  23   6   4   2   1   0   0   0   0   0   0   0   0   0   2
  344. X   6  11  30  23   6   6  14   4   0   0   0   0   0   0   0
  345. X   0   0   0   0   0   0   0   0   0  19  19  18  19  21  21
  346. X  22  22  22  22  22  22  22  22  22  22  22  19   3   0   0
  347. X   3  19  22  22  22  22  22  22  22  23  25  29  30  38  47
  348. X  54  58  48  35   1   0   0   0   0   0   0   0   0   0   0
  349. X   0   0   0   0  17  43  56  50  40  35  30  26  24  21   3
  350. X   1   0   0   0   0   0   0   0   0   0   0   1   4   4   3
  351. X   3   3   3   0   0   0   0   0   0   0   0   0   0   0   0
  352. X   0   0   0   0   0   0   0  19  19  19  21  21  21  22  22
  353. X  22  22  22  22  22  21  18   2   0   0   3  19  22  22  22
  354. X  22  23  23  24  25  25  29  31  34  42  53  59  54  40   5
  355. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  23
  356. X  49  65  55  48  44  38  37  30  28  23   4   1   0   0   0
  357. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  358. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  359. X   0   0   0   0  19  19  18  19  20  20  20  21  21  22  23
  360. X  22   4   1   0   1   4  23  25  25  25  25  25  25  25  26
  361. X  27  28  31  36  40  51  57  58  46   8   0   0   0   0   0
  362. X   0   0   0   0   0   0   0   0   0  24  52  71  63  55  50
  363. X  44  43  36  34  27  24   3   1   0   0   0   0   0   0   0
  364. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  365. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  366. X   0   0  19  19  17  18  19  18  19  20  18   2   0   0   1
  367. X  18  21  21  21  21  22  24  26  27  28  28  30  32  35  41
  368. X  52  57  54  40   8   0   0   0   0   0   0   0   0   0   0
  369. X   0   0   0   0  25  56  75  68  61  56  51  48  42  40  34
  370. X  29  22   2   0   0   0   0   0   0   0   0   0   0   0   0
  371. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  372. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  373. X   0   1  18  19  20  19   1   0   0   1  19  19  19  20  18
  374. X  19  23  24  26  29  29  31  32  36  44  51  58  48  35   5
  375. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  26
  376. X  56  79  73  65  61  57  53  49  42  37  31  26  22   1   0
  377. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  378. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  379. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  380. X   0   0   0   0   0   0   0   0   1   2  20  19  23  23  26
  381. X  27  28  31  39  47  53  52  38  11   1   0   0   0   0   0
  382. X   0   0   0   0   0   0   0   0   0  27  59  80  77  72  68
  383. X  62  59  54  48  43  37  31  24   5   2   1   0   0   0   0
  384. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  385. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  386. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  387. X   0   0   0   0   0   1   3  18  21  21  24  27  31  38  44
  388. X  47  42  31   5   0   0   0   0   0   0   0   0   0   0   0
  389. X   0   0   0   0  27  61  86  83  76  73  69  62  57  49  43
  390. X  37  32  26  23  18   3   1   0   0   0   0   0   0   0   0
  391. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  392. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  393. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  394. X   0   1   2   3  20  23  20  25  31  36  35  33   6   1   0
  395. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  28
  396. X  63  89  88  84  82  77  71  62  54  45  40  34  28  27  24
  397. X  18   2   0   0   0   0   0   0   0   0   0   0   0   0   0
  398. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  399. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  400. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  401. X   1   2   5   9  28  10   5   1   0   0   0   0   0   0   0
  402. X   0   0   0   0   0   0   0   0   0  29  62  93  93  91  88
  403. X  84  75  65  56  47  40  36  31  29  24  23  22   1   0   0
  404. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  405. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  406. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  407. X   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1
  408. X   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  409. X   0   0   0   0  28  60  90  91  90  89  85  80  65  55  44
  410. X  40  35  32  30  27  24  21  21   2   1   0   0   0   0   0
  411. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  412. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  413. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  414. X   0   0   0   0   0   0   0   0   1   1   1   0   0   0   0
  415. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0  20
  416. X  54  80  78  79  76  86  79  68  54  43  41  34  34  29  28
  417. X  26  24  20  17   2   0   0   0   0   0   0   0   0   0   0
  418. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  419. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  420. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  421. X   0   2   4  24  23   6   3   1   0   0   0   0   0   0   0
  422. X   0   0   0   0   0   0   0   0   0  11  45  57  62  52  60
  423. X  79  68  68  50  43  40  34  33  29  28  27  25  23  20  19
  424. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  425. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  426. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  427. X   0   0   0   0   0   0   0   0   0   0   1   5  23  28  29
  428. X  27  24   4   1   0   0   0   0   0   0   0   0   0   0   0
  429. X   0   0   0   0   4  34  44  47  48  47  67  66  67  50  42
  430. X  38  35  34  28  27  26  26  24  21  21  18   0   0   0   0
  431. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  432. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  433. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  434. X   0   0   0   0   1   4  27  32  35  38  35  31  25   3   0
  435. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4
  436. X  27  36  40  44  44  59  57  62  48  42  38  35  33  27  27
  437. X  25  25  24  22  21  19  19  19   0   0   0   0   0   0   0
  438. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  439. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  440. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   2
  441. X  21  27  35  42  43  41  37  29   7   0   0   0   0   0   0
  442. X   0   0   0   0   0   0   0   0   0   4  25  34  35  37  39
  443. X  56  55  59  45  41  41  36  32  30  25  22  22  22  22  22
  444. X  21  21  19  19   0   0   0   0   0   0   0   0   0   0   0
  445. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  446. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  447. X   0   0   0   0   0   0   0   0   0   3  26  35  41  45  47
  448. X  46  40  35  25   2   0   0   0   0   0   0   0   0   0   0
  449. X   0   0   0   0   6  27  31  36  37  38  48  47  59  45  42
  450. X  40  37  31  28  25  22  22  22  22  22  22  22  22  19  19
  451. X  19  19  19   1   1   0   0   0   0   0   0   0   0   0   0
  452. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  453. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  454. X   0   0   0   1   5  27  35  42  47  50  47  42  38  29   4
  455. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4
  456. X  24  33  33  31  27  26  42  50  47  46  41  39  32  29  25
  457. X  22  22  22  22  22  22  22  22  21  21  21  21  19  19  20
  458. X  20   3   3   2   1   0   0   0   0   0   0   0   0   0   0
  459. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  460. X   0   0   0   0   0   0   0   0   0   0   0   0   0   2  21
  461. X  28  37  44  46  48  48  43  37  29   4   0   0   0   0   0
  462. X   0   0   0   0   0   0   0   0   0   3   7  24  24  11   6
  463. X  10  30  36  41  41  44  39  33  30  25  22  22  22  22  22
  464. X  22  22  22  22  22  22  23  24  24  23  20  20  18  17   4
  465. X   2   1   0   0   0   0   0   0   0   0   0   0   0   0   0
  466. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  467. X   0   0   0   0   0   0   0   1   5  26  33  39  43  46  48
  468. X  45  41  34  24   4   0   0   0   0   0   0   0   0   0   0
  469. X   0   0   0   0   0   3   6   6   3   0   1   5  10  39  44
  470. X  48  41  34  30  25  22  22  22  22  22  22  22  23  24  25
  471. X  25  25  23  23  26  27  27  26  25  23  21   4   3   2   1
  472. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  473. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  474. X   1   2  22  24  27  33  37  43  43  45  42  36  30   7   2
  475. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  476. X   0   0   0   0   0   0   0   1  10  36  42  40  35  30  25
  477. X  22  22  22  22  23  24  25  26  25  26  28  28  30  31  30
  478. X  29  29  30  29  27  27  27  24  22   7   6   5   4   3   2
  479. X   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  480. X   0   0   0   0   0   0   0   0   0   0   2  19  24  26  33
  481. X  37  38  43  44  42  38  32  26   3   0   0   0   0   0   0
  482. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  483. X   0   0   0   5  35  39  40  33  30  24  22  23  24  25  27
  484. X  26  25  28  30  32  31  32  33  33  35  34  35  34  34  36
  485. X  35  34  32  31  28  27  27  28  23  18   1   0   0   0   0
  486. X   0   0   1   3   5   6   5   4   3   3   3   2   1   0   0
  487. X   0   0   0   1   2   5  23  26  30  33  38  39  43  43  40
  488. X  36  29   6   1   0   0   0   0   0   0   0   0   0   0   0
  489. X   0   0   0   0   0   0   0   0   0   0   0   0   0   1  12
  490. X  33  40  33  29  26  25  26  25  27  28  29  31  33  32  35
  491. X  36  38  39  41  43  43  43  43  44  44  44  44  42  41  40
  492. X  40  37  34  29  24   2   0   0   0   0   0   1   4  23  24
  493. X  27  27  30  30  30  28  26  24   7   6   5   5   5   7  24
  494. X  25  27  29  30  35  36  39  41  41  37  32  25   3   0   0
  495. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  496. X   0   0   0   0   0   0   0   0   0   7  27  33  32  28  29
  497. X  30  31  31  32  33  35  36  39  39  42  43  46  48  49  51
  498. X  51  52  50  50  50  50  50  50  50  50  49  47  41  33  23
  499. X   2   0   0   0   0   0   3  25  31  37  41  41  38  38  37
  500. X  35  38  34  33  31  29  31  28  30  29  29  29  30  33  36
  501. X  35  39  38  38  34  27   6   1   0   0   0   0   0   0   0
  502. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  503. X   0   0   0   0   3   9  31  31  30  32  32  33  35  36  38
  504. X  40  43  45  46  49  52  53  53  53  54  54  54  54  54  54
  505. X  54  54  54  54  54  54  51  44  34  24   2   0   0   0   0
  506. X   1   7  31  40  46  48  49  50  50  49  49  48  48  49  47
  507. X  46  44  41  37  34  30  32  32  32  33  34  34  34  33  29
  508. X  24   3   0   0   0   0   0   0   0   0   0   0   0   0   0
  509. X   0   0   0   0   0   0   0   0   0   0   0   1   2   3   4
  510. X  25  29  33  36  36  37  39  43  44  45  48  51  52  53  54
  511. X  55  56  57  58  58  57  57  57  58  59  59  59  59  58  57
  512. X  56  51  43  31   7   1   0   0   0   0   3  28  36  46  51
  513. X  53  53  53  54  56  57  59  61  61  64  60  54  46  39  33
  514. X  32  29  28  27  28  30  31  29  29  22   4   1   0   0   0
  515. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  516. X   0   0   0   0   0   3   6  25  27  28  31  36  40  43  44
  517. X  45  48  50  52  54  55  55  55  57  58  59  59  58  58  57
  518. X  56  56  55  53  53  53  53  53  53  54  53  47  39  29   5
  519. X   0   0   0   0   0   5  28  38  49  53  55  54  56  58  60
  520. X  62  68  72  72  71  64  55  45  35  32  28  27  27  24  24
  521. X  24  23  24   5   2   1   0   0   0   0   0   0   0   0   0
  522. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  523. X   5  27  35  38  40  45  47  50  51  52  53  56  57  56  57
  524. X  57  58  59  59  57  56  56  54  53  54  53  53  52  51  50
  525. X  50  50  50  51  49  46  41  32  24   2   0   0   0   0   1
  526. X   7  32  41  47  50  51  52  54  59  62  66  72  76  75  72
  527. X  60  48  37  29  24  23  22  20   4   3   3   3   2   1   0
  528. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  529. X   0   0   0   0   0   0   0   0   0   1  11  37  47  50  53
  530. X  57  58  62  63  63  63  62  63  63  61  60  58  57  57  54
  531. X  53  53  50  49  47  46  47  46  46  46  46  46  46  43  40
  532. X  33  29  25   4   1   0   0   0   0   2  25  30  37  45  46
  533. X  47  51  51  57  61  67  72  75  68  58  44  35  26  22  22
  534. X   3   3   2   1   0   0   0   0   0   0   0   0   0   0   0
  535. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  536. X   0   0   1   2  19  30  42  56  61  64  65  69  71  69  71
  537. X  70  67  65  61  62  58  56  54  52  49  47  44  43  41  38
  538. X  37  38  39  40  40  40  40  39  36  32  26   7   3   1   0
  539. X   0   0   0   1   5  27  34  38  39  42  43  47  50  56  60
  540. X  64  66  60  51  43  32  25   4   2   1   0   0   0   0   0
  541. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  542. X   0   0   0   0   0   0   0   0   0   0   0   0   2  17  21
  543. X  37  48  62  66  69  73  72  75  75  75  73  70  70  64  61
  544. X  58  53  50  45  43  39  37  36  35  34  33  32  31  31  31
  545. X  31  31  31  29  25   5   1   0   0   0   0   0   0   2  21
  546. X  26  28  31  33  38  42  47  51  56  60  60  56  46  37  25
  547. X   5   2   0   0   0   0   0   0   0   0   0   0   0   0   0
  548. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  549. X   0   0   0   0   0   0   0   3  19  23  38  50  68  71  72
  550. X  71  75  78  79  79  75  72  67  64  61  56  52  46  42  40
  551. X  36  33  31  30  31  27  29  28  28  28  28  28  28  25  21
  552. X   3   0   0   0   0   0   0   1  22  22  27  29  32  37  38
  553. X  44  48  55  57  59  56  49  35   9   2   1   0   0   0   0
  554. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  555. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  556. X   0   0   3  20  25  36  45  58  65  74  76  77  75  73  75
  557. X  74  73  70  65  60  56  50  46  41  38  34  31  29  28  27
  558. X  26  26  25  25  25  25  25  24  21  17   2   0   0   0   0
  559. X   0   0   2  20  22  28  30  33  36  43  48  52  58  57  56
  560. X  50  39  27   4   0   0   0   0   0   0   0   0   0   0   0
  561. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  562. X   0   0   0   0   0   0   0   0   0   0   0   0   3  22  26
  563. X  31  40  53  55  59  63  68  74  77  77  72  69  66  65  61
  564. X  58  53  48  43  41  35  34  31  29  28  27  26  25  25  25
  565. X  25  25  22  21   3   1   0   0   0   0   0   0   3  20  23
  566. X  28  32  37  42  49  54  57  60  57  52  40  31   7   2   0
  567. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  568. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  569. X   0   0   0   0   0   0   0   3  22  25  29  33  38  45  51
  570. X  57  56  60  62  64  69  66  64  62  60  59  54  53  46  45
  571. X  39  37  34  32  31  31  31  31  31  31  30  28  24  18   1
  572. X   0   0   0   0   0   0   1   5  23  26  32  36  42  50  56
  573. X  59  61  59  53  42  32   7   2   0   0   0   0   0   0   0
  574. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  575. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  576. X   0   0   3  18  26  27  31  33  34  36  41  45  50  55  57
  577. X  58  61  62  65  64  63  56  57  51  52  44  44  40  39  37
  578. X  34  34  34  34  34  33  30  24  19   1   0   0   0   0   0
  579. X   0   3  23  28  33  39  43  50  55  59  61  59  52  40  33
  580. X   8   2   0   0   0   0   0   0   0   0   0   0   0   0   0
  581. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  582. X   0   0   0   0   0   0   0   0   0   0   0   0   2  15  21
  583. X  25  26  30  30  31  32  33  34  37  44  48  49  49  53  56
  584. X  64  58  61  55  57  53  51  48  46  45  42  42  41  41  41
  585. X  39  35  27  22   1   0   0   0   0   0   2  25  31  38  42
  586. X  47  51  55  57  57  54  48  42  31   9   3   1   0   0   0
  587. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  588. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  589. X   0   0   0   0   0   0   0   1   2   3  22  21  25  26  30
  590. X  32  32  34  34  36  40  42  44  48  47  55  53  63  58  58
  591. X  57  55  54  53  52  50  51  52  52  51  46  40  31  21   1
  592. X   0   0   0   0   2   7  31  37  47  52  56  58  60  54  51
  593. X  43  38  29   7   4  17  18  19  18  17  18   0   0   0   0
  594. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  595. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  596. X   0   0   0   0   0   1   2   5  20  24  25  25  28  30  32
  597. X  33  34  34  37  39  46  46  54  52  60  59  58  57  55  55
  598. X  54  52  52  52  51  49  41  30   7   1   0   0   0   0   5
  599. X  25  41  50  57  60  62  59  57  47  40  34  26  23  22  21
  600. X  21  21  20  20  18  17   0   0   0   0   0   0   0   0   0
  601. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  602. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  603. X   0   0   1   2   3   5  21  25  28  29  32  32  34  35  34
  604. X  37  37  45  44  50  49  59  61  62  59  55  56  56  56  54
  605. X  49  41  28   5   0   0   0   0   0   8  31  45  55  61  61
  606. X  62  57  47  39  30  25  23  22  21  21  22  22  21  19  17
  607. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  608. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  609. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  610. X   1   2   4  20  24  26  30  31  33  33  35  32  34  36  41
  611. X  40  45  46  49  53  49  50  51  51  51  45  38  28   3   0
  612. X   0   0   0   2  11  35  48  58  61  60  55  47  40  33  28
  613. X  24  22  22  24  24  24  21  19  16   1   0   0   0   0   0
  614. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  615. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  616. X   0   0   0   0   0   0   0   0   0   0   0   0   1   2   5
  617. X  23  25  30  31  32  34  33  31  29  29  31  35  41  41  40
  618. X  38  34  35  35  35  35  28   7   1   0   0   0   1   4  24
  619. X  34  44  51  52  48  46  40  33  27  24  24  25  23  23  21
  620. X  21  17  20   2   1   0   0   0   0   0   0   0   0   0   0
  621. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  622. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  623. X   0   0   0   0   0   0   0   0   0   1   4  22  25  27  28
  624. X  29  30  31  30  28  26  24  25  26  29  29  30  31  31  30
  625. X  29  25  22  19  20  21  22  22  23  26  33  38  43  43  42
  626. X  39  35  33  31  29  28  27  22  21  17  21   2   1   0   0
  627. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  628. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  629. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  630. X   0   0   0   0   0   1   3  20  22  25  28  30  30  30  29
  631. X  27  25  24  23  22  21  21  21  22  22  22  22  20  19  19
  632. X  20  22  23  26  29  32  34  36  37  36  35  32  32  31  30
  633. X  28  27  21   5   2   1   0   0   0   0   0   0   0   0   0
  634. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  635. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  636. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  637. X   0   1   2   3  23  23  23  27  27  29  28  27  26  25  24
  638. X  23  22  22  22  22  22  22  22  23  24  25  27  29  31  30
  639. X  32  34  36  36  37  37  38  36  35  34  30  25  22   3   0
  640. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  641. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  642. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  643. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
  644. X   4  20  24  25  27  29  29  28  26  26  25  24  23  22  22
  645. X  22  22  23  23  24  26  28  30  32  34  35  37  39  40  42
  646. X  40  38  37  36  33  32  25  21   3   0   0   0   0   0   0
  647. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  648. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  649. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  650. X   0   0   0   0   0   0   0   0   0   0   1   2  22  22  26
  651. X  29  30  29  28  28  26  25  24  24  23  23  23  25  26  28
  652. X  29  30  33  35  36  38  39  40  40  41  41  41  39  37  31
  653. X  32  25  21   3   0   0   0   0   0   0   0   0   0   0   0
  654. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  655. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  656. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  657. X   0   0   0   0   0   0   0   2  23  25  28  30  31  30  29
  658. X  28  27  27  26  25  25  24  25  27  28  31  32  34  35  38
  659. X  40  39  40  40  40  40  39  38  36  31  29  25  19   2   0
  660. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  661. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  662. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  663. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  664. X   0   0   2  22  23  30  29  33  32  31  30  29  28  27  27
  665. X  27  29  28  29  29  31  33  35  36  37  39  40  41  41  40
  666. X  39  37  35  32  31  26  21   3   1   0   0   0   0   0   0
  667. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  668. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  669. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  670. X   0   0   0   0   0   0   0   0   0   0   0   0   1  19  22
  671. X  28  29  32  33  33  32  31  32  30  30  29  29  29  30  31
  672. X  32  34  35  36  34  35  34  35  33  35  33  33  31  29  26
  673. X  21  20   1   0   0   0   0   0   0   0   0   0   0   0   0
  674. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  675. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  676. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  677. X   0   0   0   0   0   0   0   1   4  21  28  30  32  34  34
  678. X  34  33  32  31  32  33  32  33  33  32  33  34  34  34  35
  679. X  36  35  34  33  32  31  28  27  22  23   2   1   0   0   0
  680. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  681. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  682. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  683. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  684. X   0   0   0   3  20  26  28  32  32  36  36  35  34  33  33
  685. X  32  31  32  33  34  35  34  32  31  30  28  27  26  26  27
  686. X  25  21  23   2   1   0   0   0   0   0   0   0   0   0   0
  687. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  688. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  689. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  690. X   0   0   0   0   0   0   0   0   0   0   0   0   0   2  18
  691. X  23  25  31  32  36  37  36  36  35  36  37  36  35  35  36
  692. X  36  33  30  29  28  25  23  23  22  22   3   2   1   0   0
  693. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  694. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  695. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  696. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  697. X   0   0   0   0   0   0   0   0   1   3  21  26  29  33  35
  698. X  37  38  38  38  37  36  37  38  37  36  35  32  30  27  21
  699. X   4   3   3   2   1   0   0   0   0   0   0   0   0   0   0
  700. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  701. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  702. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  703. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  704. X   0   0   0   0   1   3  22  26  30  34  35  37  38  39  39
  705. X  40  40  39  38  36  34  32  28  24   4   1   0   0   0   0
  706. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  707. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  708. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  709. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  710. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  711. X   1   4  24  27  31  34  33  35  36  35  36  36  35  36  34
  712. X  31  30  26  20   2   0   0   0   0   0   0   0   0   0   0
  713. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  714. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  715. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  716. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  717. X   0   0   0   0   0   0   0   0   0   0   0   2  20  26  28
  718. X  30  31  33  34  34  35  35  33  32  32  30  26  24  21   1
  719. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  720. X   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  721. X   0   0   0   0   0   0   0   0   0   0))
  722. END_OF_FILE
  723.   if test 40677 -ne `wc -c <'./example/globe.in'`; then
  724.     echo shar: \"'./example/globe.in'\" unpacked with wrong size!
  725.   fi
  726.   # end of './example/globe.in'
  727. fi
  728. if test ! -d './src' ; then
  729.     echo shar: Creating directory \"'./src'\"
  730.     mkdir './src'
  731. fi
  732. if test -f './src/Makefile' -a "${1}" != "-c" ; then 
  733.   echo shar: Will not clobber existing file \"'./src/Makefile'\"
  734. else
  735.   echo shar: Extracting \"'./src/Makefile'\" \(1309 characters\)
  736.   sed "s/^X//" >'./src/Makefile' <<'END_OF_FILE'
  737. XLIBS  = -lm -lXaw -lXt -lXmu -lX11 -lXext
  738. XFLAGS =
  739. XCOBJ  = clim.o heat.o pressure.o wind.o rain.o climate.o fileio.o
  740. XTOBJ  = tec1.o tec2.o tec3.o fileio.o
  741. XGOBJ  = globe.o fileio.o
  742. XGRAF  = x
  743. X
  744. X# Change GRAF from x to unix to produce text-only versions
  745. X
  746. Xall: clim tec globe
  747. X
  748. Xclim:       $(COBJ) $(GRAF).o; cc $(FLAGS) -o clim  $(COBJ) $(GRAF).o $(LIBS)
  749. Xtec:        $(TOBJ) $(GRAF).o; cc $(FLAGS) -o tec   $(TOBJ) $(GRAF).o $(LIBS)
  750. Xglobe:      $(GOBJ) $(GRAF).o; cc $(FLAGS) -o globe $(GOBJ) $(GRAF).o $(LIBS)
  751. X
  752. Xtec1.o:     tec1.c const.h tec.h;      cc $(FLAGS) -c tec1.c
  753. Xtec2.o:     tec2.c const.h tec.h;      cc $(FLAGS) -c tec2.c
  754. Xtec3.o:     tec3.c const.h tec.h;      cc $(FLAGS) -c tec3.c
  755. X
  756. Xglobe.o:    globe.c const.h;           cc $(FLAGS) -c globe.c
  757. X
  758. Xclim.o:     clim.c const.h clim.h;     cc $(FLAGS) -c clim.c
  759. Xheat.o:     heat.c const.h clim.h;     cc $(FLAGS) -c heat.c
  760. Xpressure.o: pressure.c const.h clim.h; cc $(FLAGS) -c pressure.c
  761. Xwind.o:     wind.c const.h clim.h;     cc $(FLAGS) -c wind.c
  762. Xrain.o:     rain.c const.h clim.h;     cc $(FLAGS) -c rain.c
  763. Xclimate.o:  climate.c const.h clim.h;  cc $(FLAGS) -c climate.c
  764. X
  765. Xfileio.o:   fileio.c const.h clim.h;   cc $(FLAGS) -c fileio.c
  766. Xunix.o:     unix.c const.h;            cc $(FLAGS) -c unix.c
  767. Xx.o:        x.c const.h clim.h;        cc $(FLAGS) -c x.c
  768. END_OF_FILE
  769.   if test 1309 -ne `wc -c <'./src/Makefile'`; then
  770.     echo shar: \"'./src/Makefile'\" unpacked with wrong size!
  771.   fi
  772.   # end of './src/Makefile'
  773. fi
  774. if test -f './src/rain.c' -a "${1}" != "-c" ; then 
  775.   echo shar: Will not clobber existing file \"'./src/rain.c'\"
  776. else
  777.   echo shar: Extracting \"'./src/rain.c'\" \(7151 characters\)
  778.   sed "s/^X//" >'./src/rain.c' <<'END_OF_FILE'
  779. X/* This program is Copyright (c) 1991 David Allen.  It may be freely
  780. X   distributed as long as you leave my name and copyright notice on it.
  781. X   I'd really like your comments and feedback; send e-mail to
  782. X   allen@viewlogic.com, or send us-mail to David Allen, 10 O'Moore
  783. X   Avenue, Maynard, MA 01754. */
  784. X
  785. X/* This file contains the routines to compute rainfall. */
  786. X
  787. X#include "const.h"
  788. X#include "clim.h"
  789. X
  790. X/* The input data arrays are l and lm, from main.c, wd, from wind.c,
  791. X   and pr, from pressure.c.  Output arrays are rm and rn; fr and fs are
  792. X   used as temporary storage. */
  793. X
  794. Xextern unsigned char l[MAXX][MAXY], lm[MAXX][MAXY], wd[MAXB][MAXX][MAXY];
  795. Xextern unsigned char pr[MAXB][MAXX][MAXY];
  796. Xunsigned char rn[MAXB][MAXX][MAXY];
  797. Xstatic unsigned char fr[2][MAXX][MAXY], fs[MAXX][MAXY];
  798. X
  799. X
  800. X/* The externs below are parameters defined in main.c; the ints are
  801. X   parameters defined here. */
  802. X
  803. Xextern int BSIZE, XSIZE, YSIZE;
  804. Xint MAXFETCH = 5, RAINCONST = 32, LANDEL = 10, MOUNTDEL = 32, FETCHDEL = 4;
  805. Xint NRFDEL = 3, HEQDEL = 32, NRHEQDEL = 24, FLANKDEL = -24, PRINTRAIN = 0;
  806. X
  807. X
  808. Xrainpar (s) char *s; {
  809. X   /* This function is called by mainpar() in main.c; it simply tests input
  810. X   parameter names to see if they are defined in this file.  Each of the
  811. X   above ints are defined in this file.  If the input string matches here,
  812. X   the function returns true. */
  813. X
  814. X   if      (CMP ("MAXFETCH"))  getlng  (&MAXFETCH,  M_RAIN);
  815. X   else if (CMP ("RAINCONST")) getlng  (&RAINCONST, M_RAIN);
  816. X   else if (CMP ("LANDEL"))    getlng  (&LANDEL,    M_RAIN);
  817. X   else if (CMP ("MOUNTDEL"))  getlng  (&MOUNTDEL,  M_RAIN);
  818. X   else if (CMP ("FETCHDEL"))  getlng  (&FETCHDEL,  M_RAIN);
  819. X   else if (CMP ("HEQDEL"))    getlng  (&HEQDEL,    M_RAIN);
  820. X   else if (CMP ("NRHEQDEL"))  getlng  (&NRHEQDEL,  M_RAIN);
  821. X   else if (CMP ("FLANKDEL"))  getlng  (&FLANKDEL,  M_RAIN);
  822. X   else if (CMP ("NRFDEL"))    getlng  (&NRFDEL,    M_RAIN);
  823. X   else if (CMP ("PRINTRAIN")) getlng  (&PRINTRAIN, M_RAIN);
  824. X   else return (0);
  825. X   return (1); }
  826. X
  827. X
  828. Xraincomp () {
  829. X   /* This is the main rain computation function.  It calls the functions
  830. X   getfetch () and getrain () to do all the work for each buffer, then
  831. X   prints out the results if needed. */
  832. X
  833. X   register int buf;
  834. X
  835. X   for (buf=0; buf<BSIZE; buf++) {
  836. X      status (M_RAIN, buf); checkmouse (); 
  837. X      getfetch (buf); checkmouse (); getrain (buf); }
  838. X
  839. X   if (PRINTRAIN) for (buf=0; buf<BSIZE; buf++)
  840. X      putmat ("RAIN", buf, PRINTMODE_SCALE, rn[buf], lm); }
  841. X
  842. X
  843. Xraindraw (n) int n; { draw (DRAW_GREY, LINE_CORN, rn[n], lm); }
  844. X   /* This function calls draw with the right arguments to display rain */
  845. X
  846. X
  847. Xfetchinc (x, y, dest) int x, y, dest; {
  848. X   /* This is the workhorse function for getfetch(), below.  It is called
  849. X   several times per square.  It changes x to account for wraparound, so it
  850. X   won't work as a macro.  If y is out of range it does nothing, else it
  851. X   "marks" the new square in fr[dest] and increments fs to record the number
  852. X   of times the square has been marked. */
  853. X
  854. X   if (x == -1) x = XSIZE-1; else if (x == XSIZE) x = 0;
  855. X   if ((y == -1) || (y == YSIZE)) return (0);
  856. X   fr[dest][x][y] = 1; fs[x][y]++; return (0); }
  857. X
  858. X
  859. Xgetfetch (buf) int buf; {
  860. X   /* "Fetch" is the term that describes how many squares a given wind line
  861. X   travels over water.  It measures how moist the wind is.  The algorithm to
  862. X   measure fetch looks like many simultaneous tree walks, where each water
  863. X   square is a root square, and every wind edge is a tree edge.  A counter
  864. X   for each square determines how many times that square is reached during
  865. X   the tree walks; that is the fetch. */
  866. X
  867. X   register int i, j, k; int src, dest;
  868. X
  869. X   /* Initialize the counter fs to zero.  Array fr, which records the */
  870. X   /* list of active edges in the walks, is set so that all ocean squares */
  871. X   /* are active.  Also, the result array rn is cleared. */
  872. X   for (i=0; i<XSIZE; i++) for (j=0; j<YSIZE; j++) {
  873. X      fr[0][i][j] = l[i][j] ? 0 : 1; fs[i][j] = 0; rn[buf][i][j] = 0; }
  874. X
  875. X   /* Each time through the loop, each square is examined.  If it's */
  876. X   /* active, disable the mark in the current time step (thus ensuring */
  877. X   /* that when the buffers are flipped, the new destination is empty). */
  878. X   /* If the square is a mountain, don't pass the mark, but instead add */
  879. X   /* some amount to the square -- implementing rain shadows and rainy */
  880. X   /* mountain squares.  Finally, for each of the eight cardinal */
  881. X   /* directions, if there is wind blowing in that direction, carry a */
  882. X   /* marker to that square using fetchinc(), above. */
  883. X
  884. X   for (k=0; k<MAXFETCH; k++) {
  885. X      src = k % 2; dest = 1 - src;
  886. X      for (i=0; i<XSIZE; i++) for (j=0; j<YSIZE; j++) if (fr[src][i][j]) {
  887. X         fr[src][i][j] = 0;
  888. X         if (l[i][j] == 2) rn[buf][i][j] += MOUNTDEL;
  889. X         else switch (wd[buf][i][j]) {
  890. X            case N|E: fetchinc (i+1, j-1, dest); break;
  891. X            case N|W: fetchinc (i-1, j-1, dest); break;
  892. X            case S|E: fetchinc (i+1, j+1, dest); break;
  893. X            case S|W: fetchinc (i-1, j+1, dest); break;
  894. X            case N:   fetchinc (i,   j-1, dest); break;
  895. X            case S:   fetchinc (i,   j+1, dest); break;
  896. X            case E:   fetchinc (i+1, j,   dest); break;
  897. X            case W:   fetchinc (i-1, j,   dest); break; } } } }
  898. X
  899. X
  900. X/* This macro is called several times per square by getrain(), below.  It
  901. X   simply tests the square for several conditions: if the square is on the
  902. X   heat equator, itcz is set to one; if the wind blows south in this square,
  903. X   it is on the flank of a circular wind zone (and thus less rainy); the local
  904. X   rain sum, x, is increased according to the fetch sum in the square. */
  905. X#define RAINTEST(xx,yy) \
  906. X   if (pr[buf][xx][yy] == PR_HEQ) itcz = 1; \
  907. X   if (wd[buf][xx][yy] & S) flank = 1; \
  908. X   x += (fs[xx][yy] * NRFDEL);
  909. X
  910. X
  911. Xgetrain (buf) int buf; {
  912. X   /* Once the fetch array is computed, this function looks at each square to
  913. X   determine the amount of rainfall there.  The above macro is called five
  914. X   times, once for the square and each of its four neighbors; this determines
  915. X   whether the square is near the ITCZ or the flank of an air cycle.  The
  916. X   sum of fetches for the neighbors is also determined.   Finally, each of the
  917. X   factors is weighted and added to the rainfall value:  the local fetch value,
  918. X   a land factor, the nearness of the heat equator, and the nearness of a
  919. X   flank.  Note that while rn is zeroed in getfetch(), it may be increased by
  920. X   rain falling on mountains, so it is nonzero when this function is called. */
  921. X
  922. X   register int i, j, x; int itcz, flank;
  923. X
  924. X   for (i=0; i<XSIZE; i++) for (j=0; j<YSIZE; j++) {
  925. X      flank = 0; itcz = 0; x = rn[buf][i][j];
  926. X      if (i < XSIZE-1) { RAINTEST (i+1, j) } else { RAINTEST (0, j) }
  927. X      if (i) { RAINTEST (i-1, j) } else { RAINTEST (XSIZE-1, j) }
  928. X      if (j < YSIZE-1) { RAINTEST (i, j+1) }
  929. X      if (j) { RAINTEST (i, j-1) }
  930. X      RAINTEST (i, j);
  931. X
  932. X      x += (RAINCONST + FETCHDEL * fs[i][j]);
  933. X      if (l[i][j]) x += LANDEL;
  934. X      if (pr[buf][i][j] == PR_HEQ) x += HEQDEL;
  935. X      if (itcz) x += NRHEQDEL;
  936. X      if (flank) x += FLANKDEL;
  937. X      if (x < 0) x = 0; if (x> 255) x = 255;
  938. X      rn[buf][i][j] = x; } }
  939. END_OF_FILE
  940.   if test 7151 -ne `wc -c <'./src/rain.c'`; then
  941.     echo shar: \"'./src/rain.c'\" unpacked with wrong size!
  942.   fi
  943.   # end of './src/rain.c'
  944. fi
  945. echo shar: End of archive 1 \(of 4\).
  946. cp /dev/null ark1isdone
  947. MISSING=""
  948. for I in 1 2 3 4 ; do
  949.     if test ! -f ark${I}isdone ; then
  950.     MISSING="${MISSING} ${I}"
  951.     fi
  952. done
  953. if test "${MISSING}" = "" ; then
  954.     echo You have unpacked all 4 archives.
  955.     rm -f ark[1-9]isdone
  956. else
  957.     echo You still must unpack the following archives:
  958.     echo "        " ${MISSING}
  959. fi
  960. exit 0
  961. exit 0 # Just in case...
  962. -- 
  963. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  964. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  965. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  966. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  967.